iT邦幫忙

2024 iThome 鐵人賽

DAY 6
0

https://ithelp.ithome.com.tw/upload/images/20240806/20144113KFVqPT4lR1.png

主題

實作一個圖片展開的動畫

成果

完整程式碼
Demo效果

實作重點

CSS

  • 先用把畫面調整出來
    • 調整圖片:flex 、flex 佔比為 1
    • 文字置中: flexjustify-contentalign-itemsflex-direction

Javascript

  • 第一段動畫

    • 配合 JS 的 class 和 css 圖片點擊放大:
      • .panel.open : flex 佔比為 5
    • 圖片點擊放大:
      • 使用 toggle 來切換 class open
    const panels = document.querySelectorAll('.panel');
    
    function clickHandler() {
      this.classList.toggle('open');
    }
    
    panels.forEach(panel => {
      panel.addEventListener("click", clickHandler);
    });
    
    
  • 第二段動畫

    • 配合 JS 的 class and css 圖片點擊文字出現:
      • 利用 transform: translate 和 add class 把動畫做出來
    • 上下文字出現:
      • 因為 e 會觸發多個事件,當事件有 flex 時,才觸發 toggle 來切換 open-active
        function transitionHandler(e) {
          if (e.propertyName.includes('flex')) {
            this.classList.toggle('open-active');
          }
        }
    
        panels.forEach(panel => {
          panel.addEventListener("transitionend", transitionHandler);
        });
    

額外知識


上一篇
【Day05】04 - Array Cardio Day 1
下一篇
【Day07】06 - Type Ahead
系列文
AI 時代,基礎要有:JavaScript30 打下紮實基礎31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言